/**********************************************************************************************************
** 程序文件：	Lz77.h
** 程序版本：	1.0
** 开发环境：	RealView MDK-ARM 5.11
** 程序作者：	盖书永
** 修改日期：	2016-1-18 19:50:46
** 文件功能：	数据压缩
** 修改日志：	
**********************************************************************************************************/
#ifndef __LZ77_H
#define __LZ77_H

#define MAX_WINDOWSIZE			4096	      // 滑动窗口的字节大小（窗口越大压缩时间越长，压缩质量越好）

/**********************************************************************************************************
* 函数名称： unsigned int CompressData(unsigned char *inbuf, unsigned int inlen, unsigned char *outbuf)
* 函数说明： 压缩数据。 压缩后的存储格式： 压缩前长度 + 压缩后长度 + 压缩后的数据;
* 输入参数： 压缩前数据，压缩前数据长度，压缩后数据(注意：如果输入的数据不可压缩，则压缩后的数据比压缩前数据至少大4字节，防止内存溢出)
* 返回参数： 压缩后数据长度
**********************************************************************************************************/
unsigned int CompressData(unsigned char *inbuf, unsigned int inlen, unsigned char *outbuf);

/**********************************************************************************************************
* 函数名称： unsigned int CompressData(unsigned char *inbuf, unsigned int inlen, unsigned char *outbuf)
* 函数说明： 解压数据。
* 输入参数： 解压前数据，解压前数据长度，解压后数据
* 返回参数： 解压后数据长度
**********************************************************************************************************/
unsigned int DeCompressData(unsigned char *inbuf, unsigned int inlen, unsigned char *outbuf);

/**********************************************************************************************************
* 函数名称： unsigned int GetOriginalDataLen(unsigned char *inbuf, unsigned int inlen)
* 函数说明： 获取压缩前原始数据长度
* 输入参数： 解压前数据，解压前数据长度
* 返回参数： 解压后数据长度
**********************************************************************************************************/
unsigned int GetOriginalDataLen(unsigned char *inbuf, unsigned int inlen);

#endif

